<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> ES5 中的新增方法 --- 数组</title>
    <!-- 
        ES5 中给我们新增了一些方法，可以很方便的操作数组或者字符串，这些方法主要包括：
        数组方法/字符串方法/对象方法
        数组方法
        迭代(遍历)方法：forEach()、map()、filter()、some()、every()；
     -->
</head>
<body>
    
</body>
<script>
    //  forEach():
    var arr = [12,23,34]
    var sum = 0
    arr.forEach(function(value,index,arr) {
       console.log('每个数组的元素：'+ value);
       console.log('索引:' + index);
       console.log('数组本身：' + arr);
       sum+=value
    })
    console.log(sum);
    console.log('************************************');
    // filter()方法
    var arr1  = [12,23,34,45,56,67,78,89,90]
    var newArr1 = arr1.filter((value,index) => {
        return value%2===0
    })
    console.log(newArr1);
    console.log('************************************');
    // some()方法
    // var arr2 = [12,23,34,45,56,67,78,89,90]
    // var flag = arr2.some((value,index) => {
    //     return value %3===0
    // })
    // console.log(flag);

    // some 查找数组中是否有满足条件的元素
    var arr2 = ['red','blue','green','pink','skyblue']
    var flag = arr2.some((value,index) => {
        return value === 'pink'
    })
    console.log(flag);
    // 1. filter 也是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来
    // 2. some 也是查找满足条件的元素是否存在  返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环

    console.log('**************** forEach()********************');
    // forEach()和some()的区别
    var arr3 = ['pink','blue','skyblue','red','black']
    arr3.forEach(value => {
        if(value == 'red') {
            console.log('找到了改元素');
            return true //不会终止迭代
        }
        console.log(11);
    })
    console.log('******************some()******************');
    arr3.some(value => {
        if(value == 'red') {
            console.log('some方法找到了该元素');
            return true //遇到return 会终止循环
        }
        console.log(11);
    })
    console.log('******************filter()******************');
    arr3.filter(value => {
        if(value == 'red') {
            console.log('filter方法找到了该元素');
            return true //不会终止迭代
        }
        console.log(11);
    })
   

</script>
<!-- 
    forEach():
    array.forEach(function(currentValue,index,arr))
    currentValue：数组当前项的值
    index：数组当前项的索引
    arr：数组对象本身

    filter()方法
    array.filter(function(currentValue,index,arr))
    ilter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有
    元素，主要用于筛选数组 
    注意它直接返回一个新数组
    currentValue: 数组当前项的值
    index：数组当前项的索引
    arr：数组对象本身
    
    some()方法
    array.some(function(currentValue,index,arr))
    some() 方法用于检测数组中的元素是否满足指定条件. 通俗点 查找数组中是否有满足条件的元素
    注意它返回值是布尔值, 如果查找到这个元素, 就返回true , 如果查找不到就返回false。
    如果找到第一个满足条件的元素,则终止循环. 不在继续查找。
    currentValue: 数组当前项的值
    index：数组当前项的索引
    arr：数组对象本身
 -->
</html>
